package definition.comparable;

/**
 * 实现Comparable接口的类
 * @author fidel
 */
public class SuperClass implements Comparable<SuperClass> {
    private int a;
    private int b;
    private int c;

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public int getC() {
        return c;
    }

    public void setC(int c) {
        this.c = c;
    }

    /**
     *  根据此对象内部属性值，比较此对象与另一对象的大小
     *  返回值可以为正整数，负整数或0。它表示此对象是大于，小于，还是等于另一对象
     *  实现Comparable<T>接口的类必须保证Comparable的泛型类T也实现了此接口才能对两者的对象进行比较
     */
    @Override
    public int compareTo(SuperClass o) {
        // 在各成员属性的权重中，c最高，a次之，b最后
        if (this.c != o.c) {
            return c > o.c ? 1 : -1;
        }
        if (this.a != o.a) {
            return a > o.a ? 1 : -1;
        }
        if (this.b != o.b) {
            return b < o.b ? 1 : -1;
        }
        return 0;
    }
}
